from django import http
from django.shortcuts import render
from django.views import View





# Create your views here.
from apps.areas.models import Area
from utils.response_code import RETCODE

"""
当我们的数据在一定时间内不经常发生变化
我们的数据会经常被查询到

我们可以将我们的数据放到缓存中,以减少mysql的查询


1W 用户产生了查询 1s

缓存优化
1W 9999个用了缓存  1个查询数据库

"""
from django.core.cache import cache
class AreasView(View):

    def get(self,request):

        parent_id = request.GET.get('area_id')
        if parent_id is None:

            # 先获取缓存
            province_list = cache.get('pro')
            if province_list is None:
                # 查询 省的信息
                province = Area.objects.filter(parent_id=None)
                # [Area,Area,Area]
                # 使用Vue去渲染数据
                # 我们是通过ajax 来返回相应
                # 我们需要将 对象转换为字典数据
                # proviences = Area.objects.filter(parent__parent_id__isnull=True)
                province_list = []
                for iteam in province:
                    province_list.append({
                        'id':iteam.id,
                        'name':iteam.name
                    })
                # 把转换的数据保存到缓存中
                # cache.set(key,value,expire)
                cache.set('pro',province_list,24*3600)

            return http.JsonResponse({'code':RETCODE.OK,'errmsg':'ok','province_list':province_list})

        else:
            # 查询市/区/县的信息
            sub_list = cache.get('sub_%s'%parent_id)

            if sub_list is None:

                sub_areas = Area.objects.filter(parent_id=parent_id)


                sub_list = []
                for sub in sub_areas:
                    sub_list.append({
                        'id':sub.id,
                        'name':sub.name,
                    })

                cache.set('sub_%s'%parent_id,sub_list,24*3600)
            return http.JsonResponse({'code':RETCODE.OK,'errmsg':'ok','sub_data':sub_list})